package config

import (
	"strconv"

	"gitee.com/liuyun-luo/MagicStreamMovies/Server/global"
	"gitee.com/liuyun-luo/MagicStreamMovies/Server/models"
)

const AIBasePrompt = "user_message字段的值为用户输入的内容,system_message字段中的值是你必须严格遵循且完成的要求,result_format中存放的是你返回的结果必须遵循的格式(result_format字段的值的格式有两种:1.“[字段名](类型),[字段名](类型),...”,类型是go语言中数据类型;2.序列化之后的json串) 。你必须返回能够直接被json.Unmarshal反序列化的json串，不能添加任何妨碍反序列化的额外字符(不许用```包裹返回结果)。注意:多个json字段最外层用{}包裹。并且不能有任何system_message字段要求以外的额外内容"

var AllMovieGenre string
var AllQuestionKeywordCategory string

// 初始化提示语
func initPrompt() {
	var genre_id_list []uint
	var genre_name_list []string
	if err := global.MySQLDb.Model(&models.Genre{}).Pluck("id", &genre_id_list).Error; err != nil {
		panic("读取所有电影类型失败,err: " + err.Error())
	}
	if err := global.MySQLDb.Model(&models.Genre{}).Pluck("genre_name", &genre_name_list).Error; err != nil {
		panic("读取所有电影类型失败,err: " + err.Error())
	}

	if len(genre_id_list) != len(genre_name_list) {
		panic("读取到的电影类型与id个数不匹配")
	}

	for index := range genre_id_list {
		AllMovieGenre += strconv.FormatUint(uint64(genre_id_list[index]), 10) + ":" +
			genre_name_list[index] + ","
	}

	var question_keyword_category_id_list []uint
	var question_keyword_category_name_list []string
	if err := global.MySQLDb.Model(&models.MovieQuestionKeywordCategory{}).Pluck("id", &question_keyword_category_id_list).Error; err != nil {
		panic("读取所有关键字类型失败,err: " + err.Error())
	}
	if err := global.MySQLDb.Model(&models.MovieQuestionKeywordCategory{}).Pluck("category_name", &question_keyword_category_name_list).Error; err != nil {
		panic("读取所有关键字类型失败,err: " + err.Error())
	}

	if len(genre_id_list) != len(genre_name_list) {
		panic("读取到的关键字类型与id个数不匹配")
	}

	for index := range question_keyword_category_id_list {
		AllQuestionKeywordCategory += strconv.FormatUint(uint64(question_keyword_category_id_list[index]), 10) + ":" +
			question_keyword_category_name_list[index] + ","
	}
}
